﻿using System.Diagnostics;
using System.Runtime.InteropServices;

namespace WebAssistant.Common
{
    public class FileHelper
    {
        /// <summary>
        /// 打开URL
        /// 跨平台
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static bool OpenUrl(string url)
        {
            try
            {
                if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))   //windows环境下打开URL
                {
                    Process p = new Process();
                    p.StartInfo.FileName = "cmd.exe";
                    p.StartInfo.UseShellExecute = false;    //不使用shell启动
                    p.StartInfo.RedirectStandardInput = true;//喊cmd接受标准输入
                    p.StartInfo.RedirectStandardOutput = false;//不想听cmd讲话所以不要他输出
                    p.StartInfo.RedirectStandardError = true;//重定向标准错误输出
                    p.StartInfo.CreateNoWindow = true;//不显示窗口
                    p.Start();

                    //向cmd窗口发送输入信息 后面的&exit告诉cmd运行好之后就退出
                    p.StandardInput.WriteLine("start " + url + "&exit");
                    p.StandardInput.AutoFlush = true;
                    p.WaitForExit();//等待程序执行完退出进程
                    p.Close();
                }
                else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))  //Linux环境下打开URL
                {
                    
                }
                else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))  //Mac环境下打开URL
                {
                    
                }
            }
            catch
            {
                return false;
            }
            return true;
        }

        /// <summary>
        /// 打开指定目录下的文件
        /// 跨平台
        /// </summary>
        /// <param name="filePath">文件地址(包含文件名称)</param>
        /// <returns></returns>
        public static bool OpenFile(string filePath)
        {
            try
            {
                if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))   //windows环境下打开文件
                {
                    filePath = filePath.Replace("&", "^&");
                    Process.Start(new ProcessStartInfo("cmd", $"/c start {filePath}") { CreateNoWindow = true });
                }
                else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))  //Linux环境下打开文件
                {
                    Process.Start("xdg-open", filePath);
                }
                else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))  //Mac环境下打开文件
                {
                    Process.Start("open", filePath);
                }
            }
            catch
            {
                return false;
            }
            return true;
        }
    }
}
